﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HA.Data
{

    /// <summary>
    /// 存储点线面和多边形相交计算的结果 包括：相交单元格的 I J K  和值（线的长度；面的面积）
    /// </summary>
    public class ValueResult
    {

        public ValueResult()
        { 
        }

        /// <summary>
        /// 位置信息参数 保修改扩展 以便兼容barrier信息存储
        /// </summary>
        /// <param name="i"></param>
        /// <param name="j"></param>
        /// <param name="k"></param>
        /// <param name="value"></param>
        /// <param name="i1">只有barrier使用</param>
        /// <param name="j1">只有barrier使用</param>
        public ValueResult(int i, int j, int k, double value, int i1 = 1, int j1 = 1)
        {
            this._I = i;
            this._J = j;
            this._K = k;
            this._I1 = i1;
            this._J1 = j1;

            this._value = value;
        }

        int _I1 = 1;
        /// <summary>
        /// 第二个单元格的 Row（注意：从1开始而不是0） 计算Barrier时使用。
        /// </summary>
        public int I1
        {
            get { return _I1; }
            set { _I1 = value; }
        }

        int _J1 = 1;
        /// <summary>
        /// 第二个单元格的 Col（注意：从1开始而不是0） 计算Barrier时使用。
        /// </summary>
        public int J1
        {
            get { return _J1; }
            set { _J1 = value; }
        }

        private int _I = 1;
        /// <summary>
        /// 单元格的 Row（注意：从1开始而不是0）
        /// </summary>
        public int I
        {
            get { return _I; }
            set { _I = value; }
        }

        private int _J = 1;
        /// <summary>
        /// 单元格的 Col（注意：从1开始而不是0）
        /// </summary>
        public int J
        {
            get { return _J; }
            set { _J = value; }
        }


        private int _K = 1;
        /// <summary>
        /// 单元格的 Layer（注意：从1开始而不是0）
        /// </summary>
        public int K
        {
            get { return _K; }
            set { _K = value; }
        }


        private double _value = 0.0;
        /// <summary>
        /// 存储线和多边形的长度或者面和多边形的面积
        /// </summary>
        public double Value
        {
            get { return _value; }
            set { _value = value; }
        }

        double _lineCurrentTotalLength;
        /// <summary>
        /// 只与线计算相关，线起点到当前单元格的长度（加的是格中长度的1/2）
        /// </summary>
        public double LineCurrentTotalLength
        {
            get { return _lineCurrentTotalLength; }
            set { _lineCurrentTotalLength = value; }
        }


        double _tempValue;


        /// <summary>
        /// 临时存储数据
        /// </summary>
        public double TempValue
        {
            get { return _tempValue; }
            set { _tempValue = value; }
        }

        /// <summary>
        /// 勿用且未初始化，临时存储线当前（上一个）交点的引用 
        /// </summary>
        public object TempRef;
    }
}
